#!/bin/bash

# Ubuntu ARM Linux 辅助决策系统停止脚本

echo "🛑 停止辅助决策系统服务"
echo "========================"

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 日志函数
log_info() {
    echo -e "${BLUE}[INFO]${NC} $1"
}

log_success() {
    echo -e "${GREEN}[SUCCESS]${NC} $1"
}

log_warning() {
    echo -e "${YELLOW}[WARNING]${NC} $1"
}

log_error() {
    echo -e "${RED}[ERROR]${NC} $1"
}

# 停止后端服务
stop_backend() {
    log_info "停止后端服务..."
    
    if [[ -f "backend/backend.pid" ]]; then
        BACKEND_PID=$(cat backend/backend.pid)
        if ps -p $BACKEND_PID > /dev/null; then
            log_info "正在停止后端进程 (PID: $BACKEND_PID)..."
            kill $BACKEND_PID
            
            # 等待进程结束
            for i in {1..10}; do
                if ! ps -p $BACKEND_PID > /dev/null; then
                    log_success "后端服务已停止"
                    rm -f backend/backend.pid
                    break
                fi
                sleep 1
            done
            
            # 如果进程仍在运行，强制杀死
            if ps -p $BACKEND_PID > /dev/null; then
                log_warning "强制停止后端进程..."
                kill -9 $BACKEND_PID
                rm -f backend/backend.pid
            fi
        else
            log_warning "后端进程不存在"
            rm -f backend/backend.pid
        fi
    else
        log_warning "未找到后端 PID 文件"
    fi
    
    # 检查端口占用
    if netstat -tlnp 2>/dev/null | grep -q ":8000 "; then
        log_warning "端口 8000 仍被占用，尝试强制释放..."
        sudo fuser -k 8000/tcp 2>/dev/null || true
    fi
}

# 停止前端服务
stop_frontend() {
    log_info "停止前端服务..."
    
    if [[ -f "frontend/frontend.pid" ]]; then
        FRONTEND_PID=$(cat frontend/frontend.pid)
        if ps -p $FRONTEND_PID > /dev/null; then
            log_info "正在停止前端进程 (PID: $FRONTEND_PID)..."
            kill $FRONTEND_PID
            
            # 等待进程结束
            for i in {1..10}; do
                if ! ps -p $FRONTEND_PID > /dev/null; then
                    log_success "前端服务已停止"
                    rm -f frontend/frontend.pid
                    break
                fi
                sleep 1
            done
            
            # 如果进程仍在运行，强制杀死
            if ps -p $FRONTEND_PID > /dev/null; then
                log_warning "强制停止前端进程..."
                kill -9 $FRONTEND_PID
                rm -f frontend/frontend.pid
            fi
        else
            log_warning "前端进程不存在"
            rm -f frontend/frontend.pid
        fi
    else
        log_warning "未找到前端 PID 文件"
    fi
    
    # 检查端口占用
    if netstat -tlnp 2>/dev/null | grep -q ":3000 "; then
        log_warning "端口 3000 仍被占用，尝试强制释放..."
        sudo fuser -k 3000/tcp 2>/dev/null || true
    fi
}

# 清理临时文件
cleanup() {
    log_info "清理临时文件..."
    
    # 删除 PID 文件
    rm -f backend/backend.pid
    rm -f frontend/frontend.pid
    
    # 清理 Python 缓存
    find . -type d -name "__pycache__" -delete 2>/dev/null || true
    find . -name "*.pyc" -delete 2>/dev/null || true
    
    log_success "清理完成"
}

# 显示服务状态
show_status() {
    echo
    echo "📊 服务状态检查"
    echo "================"
    
    # 检查后端
    if netstat -tlnp 2>/dev/null | grep -q ":8000 "; then
        echo "❌ 后端服务仍在运行"
    else
        echo "✅ 后端服务已停止"
    fi
    
    # 检查前端
    if netstat -tlnp 2>/dev/null | grep -q ":3000 "; then
        echo "❌ 前端服务仍在运行"
    else
        echo "✅ 前端服务已停止"
    fi
    
    echo
}

# 主函数
main() {
    stop_backend
    stop_frontend
    cleanup
    show_status
    
    echo "🎉 所有服务已停止！"
    echo "要重新启动服务，请运行: ./start_ubuntu_arm.sh"
}

# 执行主函数
main "$@"
